﻿using System;
using System.Windows.Forms;
using System.Collections.Generic;

namespace ToyChat
{
    /// <summary>
    /// This interface describes the main user interface of ToyChat with "all" it's elements
    /// </summary>
    public interface IUserInterface
    {
        /// <summary>
        /// Registers the specified control as a UI pane (should be opened in a new tab) with the specified title.
        /// <para/>
        /// Returns a unique identifier for the newly registered pane
        /// <para/>
        /// Please note that the default implementation will only accept Panes derriving from <see cref="Control"/>
        /// </summary>
        /// <param name="pane">The actual control to use</param>
        void RegisterUIPane(IPane pane);

        /// <summary>
        /// Registers the specified control as a settings pane (when user enters settings, the control is added automatically)
        /// </summary>
        /// <param name="pane">The actual control to use</param>
        void RegisterSettingsPane(IPane pane);

        /// <summary>
        /// Removes the specified <see cref="IPane"/> from this user interface
        /// </summary>
        /// <param name="pane">The pane to remove</param>
        void RemoveSettingsPane(IPane pane);

        /// <summary>
        /// Removes the specified <see cref="IPane"/> from the user interface
        /// </summary>
        /// <param name="pane">The pane to remove</param>
        void RemoveUIPane(IPane pane);

        /// <summary>
        /// Gets a reference to the main menu of the user interface (this is exposed for compatibility's sake)
        /// </summary>
        object MainMenu { get; }
    }
}